package com.example.android_day01.Dome

// if  when 控制流程语句

// 入口函数
fun main() {
    // 定义变量标记年龄，18岁以下，玩泥巴，18-25 打游戏，25之后晚婚，65岁之后退休
    //  基于 age进行判断即可，不需要额外增加其他的 变量
// 改为用if判断
//  调整代码 随机生成0-100的数字，并赋值给age
    val age = (0..100).random()
    println("age = $age")
    if (age < 18) {
        println("玩泥巴")
    } else if (age < 25) {
        println("打游戏")
    } else if (age < 65) {
        println("晚婚")
    } else {
        println("退休")
    }


    //    when (age) {
//        in 0..18 -> println("玩泥巴")
//        in 19..25 -> println("打游戏")
//        in 26..65 -> println("晚婚")
//        else -> println("退休")
//    }

//  用 when改写上面的代码
//  不要用lambda表达式，改的可读性高一些
    when (age) {
        in 0..18 -> println("玩泥巴")
        in 19..25 -> println("打游戏")
        in 26..65 -> println("晚婚")
        else -> println("退休")
    }

//  定义一个 字符串，设置为 中午
    val time = "中午"
//  用when写一个逻辑， 根据time的值，返回不同的结果，早上-吃肠粉 中午-吃猪脚饭 晚上-黄焖鸡
    var res = when (time) {
        "早上" -> println("吃肠粉")
        "中午" -> println("吃猪脚饭")
        "晚上" -> println("黄焖鸡")
        else -> {}
    }
//    println(res)

    // 补上注释
    // 定义一个函数，根据成绩返回等级
    // 成绩在90分以上，返回A
    // 成绩在80分以上，返回B
    // 成绩在70分以上，返回C
    // 成绩在60分以上，返回D
    // 成绩在60分以下，返回F
//    .. 和 until分别是什么意思
    // .. 包含 两边都可以渠道
    // until 取不到右边
// 如果不希望左边也取到，用什么符号
//  还有什么和util类似的

    //    when对标 switch
    fun whereFunc2(score: Int): String = when (score) {
        in 90..100 -> "A"
        in 80 until 90 -> "B"
        in 70 until 80 -> "C"
        in 60 until 70 -> "D"
        else -> "F"
    }

    //  帮我将上面的函数改写， 90到100 不包含 90和100都是A，大于等于100是A+，90及以下是 A-
    fun whereFunc3(score: Int): String = when (score.toDouble()) {
        in 90.1..100.0 -> "A"
        in 100.1..110.0 -> "A+"
        else -> "A-"
    }

    println(whereFunc3(100))


}
